﻿using System;
using System.Windows.Forms;
using ProyectoActivos.Daos;
using ProyectoActivos.Validate;

namespace ProyectoActivos.Forms
{
    public partial class FrmLogin : Form, IValidateForm
    {
        private bool _valid;
        
        public FrmLogin()
        {
            InitializeComponent();
            _valid = true;
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void btnAceptar_Click(object sender, EventArgs e)
        {
            _valid = true;
            errorProvider.Clear();
            FormsAssert.AssertTextBoxNotEmptyAndSize(txtUsuario, 0, errorProvider, this);
            FormsAssert.AssertTextBoxNotEmptyAndSize(txtContrasena, 0, errorProvider, this);
            ActionExecutor.Execute(this, delegate
            {
                var usuarioDao = new UsuarioDAO();
                bool usuarioValido;
                var usuario = usuarioDao.ValidarUsuario(txtUsuario.Text, txtContrasena.Text, out usuarioValido);
                if (usuarioValido)
                {
                    var principal = ((FrmInicioActivos)MdiParent);
                    principal.MnuPrincipal.Visible = true;
                    principal.Usuario = usuario;
                    Close();
                }
                else
                {
                    MessageBox.Show(@"El usuario ingresado no se encuentra registrado o la contraseña no es correcta", @"Usuario invalido", MessageBoxButtons.OK);
                }
            });
        }


        public void Invalid()
        {
            _valid = false;
        }

        public bool IsValid()
        {
            return _valid;
        }
    }
}
